/*
* OConnectionJPanel.java
*
* Created on 4. Juni 2008, 17:32
*/
package org.netbeans.modules.languages.pl_sql.editor;
import org.netbeans.modules.languages.pl_sql.editor.oracletree.*;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dialog;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;
import oracle.jdbc.OracleConnection;
import org.netbeans.api.progress.ProgressHandle;
import org.netbeans.api.progress.ProgressHandleFactory;
import org.openide.DialogDescriptor;
import org.openide.DialogDisplayer;
import org.openide.util.HelpCtx;
import org.openide.util.NbBundle;
import org.openide.util.RequestProcessor;
import org.openide.util.Task;
import org.openide.util.TaskListener;
/**
*
* @author SUMsoft
*/
public class OConnectionJPanel extends javax.swing.JPanel implements HelpCtx.Provider {
;
private final static String helpCtx = "org.netbeans.modules.languages.pl_sql.editor.connect";
/** Creates new form OConnectionJPanel */
public OConnectionJPanel() {
initComponents();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
ServerNamejLabel = new javax.swing.JLabel();
ServerNamejTextField = new javax.swing.JTextField();
PortjLabel = new javax.swing.JLabel();
PortjTextField = new javax.swing.JTextField();
DatabseNamejTextField = new javax.swing.JTextField();
UserjPanel = new javax.swing.JPanel();
UserNamejLabel = new javax.swing.JLabel();
UserNamejTextField = new javax.swing.JTextField();
SavePasswordjCheckBox = new javax.swing.JCheckBox();
PasswordjLabel = new javax.swing.JLabel();
PasswordjPasswordField = new javax.swing.JPasswordField();
ConnectAsjLabel = new javax.swing.JLabel();
ConnectAsjComboBox = new javax.swing.JComboBox();
connectProgressPanel = new javax.swing.JPanel();
progressMessageLabel = new javax.swing.JLabel();
progressContainerPanel = new javax.swing.JPanel();
DBTypejComboBox = new javax.swing.JComboBox();
ServerNamejLabel.setText(org.openide.util.NbBundle.getMessage(OConnectionJPanel.class, "OConnectionJPanel.ServerNamejLabel.text")); // NOI18N
PortjLabel.setText(org.openide.util.NbBundle.getMessage(OConnectionJPanel.class, "OConnectionJPanel.PortjLabel.text")); // NOI18N
PortjTextField.setText(org.openide.util.NbBundle.getMessage(OConnectionJPanel.class, "OConnectionJPanel.PortjTextField.text")); // NOI18N
UserjPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(OConnectionJPanel.class, "OConnectionJPanel.UserjPanel.border.title"))); // NOI18N
UserNamejLabel.setText(org.openide.util.NbBundle.getMessage(OConnectionJPanel.class, "OConnectionJPanel.UserNamejLabel.text")); // NOI18N
SavePasswordjCheckBox.setText(org.openide.util.NbBundle.getMessage(OConnectionJPanel.class, "OConnectionJPanel.SavePasswordjCheckBox.text")); // NOI18N
PasswordjLabel.setText(org.openide.util.NbBundle.getMessage(OConnectionJPanel.class, "OConnectionJPanel.PasswordjLabel.text")); // NOI18N
ConnectAsjLabel.setText(org.openide.util.NbBundle.getMessage(OConnectionJPanel.class, "OConnectionJPanel.ConnectAsjLabel.text")); // NOI18N
ConnectAsjComboBox.setModel(new javax.swing.DefaultComboBoxModel( RoleTypes.values()));
javax.swing.GroupLayout UserjPanelLayout = new javax.swing.GroupLayout(UserjPanel);
UserjPanel.setLayout(UserjPanelLayout);
UserjPanelLayout.setHorizontalGroup(
UserjPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, UserjPanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(UserjPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(UserjPanelLayout.createSequentialGroup()
.addGroup(UserjPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(UserNamejLabel)
.addComponent(ConnectAsjLabel))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(UserjPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(SavePasswordjCheckBox)
.addComponent(ConnectAsjComboBox, javax.swing.GroupLayout.Alignment.LEADING, 0, 202, Short.MAX_VALUE)
.addComponent(UserNamejTextField, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 202, Short.MAX_VALUE)))
.addGroup(UserjPanelLayout.createSequentialGroup()
.addComponent(PasswordjLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(PasswordjPasswordField, javax.swing.GroupLayout.DEFAULT_SIZE, 204, Short.MAX_VALUE)))
.addContainerGap())
);
UserjPanelLayout.setVerticalGroup(
UserjPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(UserjPanelLayout.createSequentialGroup()
.addGroup(UserjPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(UserNamejLabel)
.addComponent(UserNamejTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(SavePasswordjCheckBox)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(UserjPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(PasswordjLabel)
.addComponent(PasswordjPasswordField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(UserjPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(ConnectAsjLabel)
.addComponent(ConnectAsjComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
connectProgressPanel.setLayout(new java.awt.BorderLayout(0, 4));
progressMessageLabel.setText(org.openide.util.NbBundle.getMessage(OConnectionJPanel.class, "OConnectionJPanel.progressMessageLabel.text")); // NOI18N
connectProgressPanel.add(progressMessageLabel, java.awt.BorderLayout.NORTH);
progressContainerPanel.setMinimumSize(new java.awt.Dimension(20, 20));
progressContainerPanel.setPreferredSize(new java.awt.Dimension(20, 20));
progressContainerPanel.setLayout(new java.awt.BorderLayout());
connectProgressPanel.add(progressContainerPanel, java.awt.BorderLayout.CENTER);
DBTypejComboBox.setModel(new javax.swing.DefaultComboBoxModel( ConnectionTypes.values()));
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(UserjPanel, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(connectProgressPanel, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 299, Short.MAX_VALUE)
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(PortjLabel)
.addComponent(ServerNamejLabel)
.addComponent(DBTypejComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(6, 6, 6)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(ServerNamejTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 224, Short.MAX_VALUE)
.addComponent(PortjTextField, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 224, Short.MAX_VALUE)
.addComponent(DatabseNamejTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 224, Short.MAX_VALUE))))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(ServerNamejLabel)
.addComponent(ServerNamejTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(PortjLabel)
.addComponent(PortjTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(DatabseNamejTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(DBTypejComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(UserjPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(connectProgressPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
}// </editor-fold>//GEN-END:initComponents
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JComboBox ConnectAsjComboBox;
private javax.swing.JLabel ConnectAsjLabel;
private javax.swing.JComboBox DBTypejComboBox;
private javax.swing.JTextField DatabseNamejTextField;
private javax.swing.JLabel PasswordjLabel;
private javax.swing.JPasswordField PasswordjPasswordField;
private javax.swing.JLabel PortjLabel;
private javax.swing.JTextField PortjTextField;
private javax.swing.JCheckBox SavePasswordjCheckBox;
private javax.swing.JLabel ServerNamejLabel;
private javax.swing.JTextField ServerNamejTextField;
private javax.swing.JLabel UserNamejLabel;
private javax.swing.JTextField UserNamejTextField;
private javax.swing.JPanel UserjPanel;
private javax.swing.JPanel connectProgressPanel;
private javax.swing.JPanel progressContainerPanel;
private javax.swing.JLabel progressMessageLabel;
// End of variables declaration//GEN-END:variables
private Dialog dlg;
private TestConnection tc = null;
private boolean isSaved = false;
private final String[] str = {Utils.getBundle().getString("LBL_Test"),
Utils.getBundle().getString("LBL_Save"),
Utils.getBundle().getString("LBL_Cancel")/*,
Utils.getBundle().getString("LBL_Help")*/
};
private String OConnPrefNode = null;
public void setPassword(String str) {
this.PasswordjPasswordField.setText(str);
}
public void setSavePassword(Boolean b) {
this.SavePasswordjCheckBox.setSelected(b);
}
public void setUserName(String str) {
this.UserNamejTextField.setText(str);
}
public void setConnectAs(RoleTypes rt) {
this.ConnectAsjComboBox.setSelectedItem(rt);
}
public void setDatabseName(String str) {
this.DatabseNamejTextField.setText(str);
}
public void setPort(int i) {
this.PortjTextField.setText(String.valueOf(i));
}
public void setServerName(String str) {
this.ServerNamejTextField.setText(str);
}
public String getServerName() {
return ServerNamejTextField.getText();
}
public ConnectionTypes getConnectionType() {
return (ConnectionTypes) DBTypejComboBox.getSelectedItem();
}
public void setConnectionType(ConnectionTypes ctype) {
DBTypejComboBox.setSelectedItem(ctype);
}
public int getPort() {
return Integer.parseInt(PortjTextField.getText());
}
public String getDatabaseName() {
return DatabseNamejTextField.getText();
}
public String getUserName() {
return UserNamejTextField.getText();
}
public Boolean getSaveUserPassword() {
return SavePasswordjCheckBox.isSelected();
}
public String getPassword() {
return String.copyValueOf(PasswordjPasswordField.getPassword());
}
public RoleTypes getConnectRole() {
return (RoleTypes) ConnectAsjComboBox.getSelectedItem();
}
public Boolean Validate() {
if (getServerName().length() == 0) {
JOptionPane.showMessageDialog(this, Utils.getBundle().getString("LBL_ServerNameReq"),
Utils.getBundle().getString("LBL_InputError"), JOptionPane.ERROR_MESSAGE);
return false;
}
try {
int i = getPort();
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(this, Utils.getBundle().getString("LBL_PortReq"),
Utils.getBundle().getString("LBL_InputError"), JOptionPane.ERROR_MESSAGE);
return false;
}
if (getDatabaseName().length() == 0) {
JOptionPane.showMessageDialog(this, Utils.getBundle().getString("LBL_DBNameReq"),
Utils.getBundle().getString("LBL_InputError"), JOptionPane.ERROR_MESSAGE);
return false;
}
if (getUserName().length() == 0) {
JOptionPane.showMessageDialog(this, Utils.getBundle().getString("LBL_UserNameReq"),
Utils.getBundle().getString("LBL_InputError"), JOptionPane.ERROR_MESSAGE);
return false;
}
if (getSaveUserPassword() && getPassword().length() == 0) {
JOptionPane.showMessageDialog(this, Utils.getBundle().getString("LBL_PassReq"),
Utils.getBundle().getString("LBL_InputError"), JOptionPane.ERROR_MESSAGE);
return false;
}
return true;
}
ActionListener listener = new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().compareTo(Utils.getBundle().getString("LBL_Cancel")) == 0) {
dlg.setVisible(false);
}
if (e.getActionCommand().compareTo(Utils.getBundle().getString("LBL_Save")) == 0) {
if (Validate()) {
OConnectionClass ocs = new OConnectionClass(OConnPrefNode, getServerName(), getPort(), getDatabaseName(), getConnectionType().toString(),
getUserName(), getPassword(), getSaveUserPassword(), getConnectRole());
ocs.SaveConnection();
ocs.SaveAllUsers();
isSaved = true;
dlg.setVisible(false);
}
}
if (e.getActionCommand().compareTo(Utils.getBundle().getString("LBL_Test")) == 0) {
//JOptionPane.showMessageDialog(null, "Object is " + dlg.getFocusOwner().getClass().getName());
if (tc == null) {
if (Validate()) {
if (getPassword().length() == 0) {
JOptionPane.showMessageDialog(dlg, Utils.getBundle().getString("LBL_PassReq"),
Utils.getBundle().getString("LBL_InputError"), JOptionPane.ERROR_MESSAGE);
return;
}
OConnectionClass ocs = new OConnectionClass(null, getServerName(), getPort(), getDatabaseName(), getConnectionType().toString(),
getUserName(), getPassword(), true, getConnectRole());
tc = new TestConnection(ocs);
tc.post();
testbtn = (javax.swing.JButton) dlg.getFocusOwner();
ChangeTestButton();
}
}
}
if (e.getActionCommand().compareTo(Utils.getBundle().getString("LBL_Stop")) == 0) {
tc.stop();
testbtn = (javax.swing.JButton) dlg.getFocusOwner();
ChangeTestButton();
}
/*if (e.getActionCommand().compareTo(Utils.getBundle().getString("LBL_Help")) == 0) {
Help help = (Help) Lookup.getDefault().lookup(Help.class);
if (help != null && help.isValidID(helpCtx, true).booleanValue()) {
help.showHelp(new HelpCtx(helpCtx));
} else {
Toolkit.getDefaultToolkit().beep();
}
}*/
}
};
private ProgressHandle progressHandle;
private JComponent progressComponent;
private JButton testbtn;
private void ChangeTestButton() {
if (testbtn != null) {
if (testbtn.getText().compareTo(Utils.getBundle().getString("LBL_Test")) == 0) {
testbtn.setText(Utils.getBundle().getString("LBL_Stop"));
return;
}
if (testbtn.getText().compareTo(Utils.getBundle().getString("LBL_Stop")) == 0) {
testbtn.setText(Utils.getBundle().getString("LBL_Test"));
}
}
}
private void startProgress(final String msg) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
progressHandle = ProgressHandleFactory.createHandle(null);/*, new Cancellable () {
public boolean cancel() {
throw new UnsupportedOperationException("Not supported yet.");
}
});*/
progressComponent = ProgressHandleFactory.createProgressComponent(progressHandle);
progressContainerPanel.add(progressComponent, BorderLayout.CENTER);
//JLabel progressMessage = ProgressHandleFactory.createDetailLabelComponent(progressHandle);
progressHandle.start();
//dlg.validate();
progressMessageLabel.setForeground(Color.BLACK);
progressMessageLabel.setText(msg);
}
});
}
private void stopProgress(final String msg, final boolean connected) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
progressHandle.finish();
progressContainerPanel.remove(progressComponent);
// without this, the removed progress component remains painted on its parent... why?
progressContainerPanel.repaint();
if (connected) {
progressMessageLabel.setForeground(Color.BLACK);
} else {
progressMessageLabel.setForeground(Color.RED);
}
progressMessageLabel.setText(msg);
//dlg.pack();
//dlg.validate();
}
});
}
private void ShowDialogInternal(String caption) {
//OConnectionJPanel oc = new OConnectionJPanel();
DialogDescriptor d = new DialogDescriptor(this, caption, true, str, null, DialogDescriptor.BOTTOM_ALIGN, HelpCtx.findHelp(this), listener);
//d.setModal(true);
//d.setMessageType(NotifyDescriptor.PLAIN_MESSAGE);
//d.setOptionType(NotifyDescriptor.DEFAULT_OPTION);
dlg = DialogDisplayer.getDefault().createDialog(d);
dlg.pack();
//dlg.setSize(new Dimension(800, 600));
dlg.setVisible(true);
}
public void ShowEmptyDialog() {
ShowDialogInternal(Utils.getBundle().getString("LBL_AddConn"));
}
private void DisableDBControls() {
this.DatabseNamejTextField.setEnabled(false);
this.PortjTextField.setEnabled(false);
this.ServerNamejTextField.setEnabled(false);
this.DBTypejComboBox.setEnabled(false);
UserNamejTextField.transferFocus();
}
public void ShowDialog(OConnectionClass ocs) {
if (ocs != null) {
OConnPrefNode = ocs.getPrefNode();
setServerName(ocs.getServerName());
setPort(ocs.getPort());
setDatabseName(ocs.getDatabaseName());
DisableDBControls();
ShowDialogInternal(Utils.getBundle().getString("LBL_AddUser"));
}
}
public void ShowEditConnDialog(OConnectionClass ocs) {
if (ocs != null) {
OConnPrefNode = ocs.getPrefNode();
setServerName(ocs.getServerName());
setPort(ocs.getPort());
setDatabseName(ocs.getDatabaseName());
setConnectionType(ocs.getConnectionType());
if (ocs.getUsers().size() > 0) {
setUserName(ocs.getUsers().first().getUserName());
setSavePassword(ocs.getUsers().first().getSavePassword());
setPassword(ocs.getUsers().first().getPassword());
setConnectAs(ocs.getUsers().first().getConnectRole());
}
ShowDialogInternal(Utils.getBundle().getString("LBL_EditConn"));
}
}
public void ShowEditUserDialog(OUser ocs) {
if (ocs != null) {
OConnPrefNode = ocs.getParent().getPrefNode();
setServerName(ocs.getParent().getServerName());
setPort(ocs.getParent().getPort());
setDatabseName(ocs.getParent().getDatabaseName());
setConnectionType(ocs.getParent().getConnectionType());
setUserName(ocs.getUserName());
setSavePassword(ocs.getSavePassword());
setPassword(ocs.getPassword());
setConnectAs(ocs.getConnectRole());
DisableDBControls();
ShowDialogInternal(Utils.getBundle().getString("LBL_EditUser"));
}
}
public boolean getIsSaved() {
return isSaved;
}
class TestConnection {
private OConnectionClass ocs;
private RequestProcessor rp;
private RequestProcessor.Task task;
private String msg;
private boolean connected = false;
private OracleConnection oc = null;
private boolean interrupted = false;
public TestConnection(final OConnectionClass ocs) {
this.ocs = ocs;
rp = new RequestProcessor(TestConnection.class.getName(), 1, true);
task = rp.create(new Runnable() {
public void run() {
try {
startProgress(NbBundle.getMessage(Utils.getCommonClass(), "LBL_ConnectingTo", ocs.toString()));
oc = (OracleConnection) ocs.getUsers().first().getOracleDataSource().getConnection();
msg = NbBundle.getMessage(Utils.getCommonClass(), "LBL_ConnectedTo", ocs.toString());
connected = true;
} catch (SQLException ex) {
msg = ex.getMessage();
} finally {
if (oc != null) {
try {
oc.close();
} catch (SQLException ex) {
msg = ex.getMessage();
}
}
}
}
});
task.addTaskListener(
new TaskListener() {
public void taskFinished(Task arg0) {
if (!interrupted) {
stopProgress(msg, connected);
ChangeTestButton();
tc = null;
}
}
});
}
public void post() {
rp.post(task);
}
public void stop() {
task.cancel();
interrupted = true;
stopProgress(Utils.getBundle().getString("LBL_Canceled"), false);
tc = null;
}
}
public HelpCtx getHelpCtx() {
return new HelpCtx(this.helpCtx);
}
}